#地基承载力修正
class Ground_Bearing_Capacity_Modify:
    def __init__(self):
        self.copyright_info()
        self.standard_type =int(input('>>>>>请选择地基承载力特征值修正参照的标准\n'
                                      '【0-《建筑地基规范》；1-《桥涵地基规范》】：'))

        if self.standard_type ==0:
            self.modified_capacity_building()
        elif self.standard_type ==1:
            self.modified_capacity_bridge()
        else:
            print('\n输入错误，请重新执行程序！')

    def copyright_info(self):
        print('------------------------------------------------------')
        print('{:^50}'.format('《基础工程》'))
        print('{:^50}'.format('地基承载力特征值修正'))
        print('------------------------------------------------------')

    def modified_capacity_bridge(self):
        print('--------------------------------------------------')
        print('{:<50}'.format('根据《桥涵地基规范》规定的地基承载力特征值的修正'))
        print('--------------------------------------------------')

        print('\n*****关于【未修正地基承载力特征值】的说明*****\n'
              '    1-该值为根据土的物理，力学指标查表或原位测试所得地基承载力特征值。')
        self.fa_1 = float(input('>>>>>请输入未修正地基承载力特征值(kPa):'))

        print('\n*****关于【基础底面宽度】的说明*****\n'
              '    1-当宽度b<2 米时，b取2米，当宽度b>10米时，b取10米。')
        self.width_1 = float(input('>>>>>请输入基础底面的最小边长度或直径(m):'))

        print('\n*****关于【基础埋置深度】的说明*****\n'
              '    1-对于受水流冲刷的基础，由一般冲刷线算起;\n'
              '    2-不受水流冲刷者，由天然底面算起;\n'
              '    3-对于挖方内的基础，由开挖后底面算起;\n'
              '    4-当埋置深度h<3米时，按3米计算;\n'
              '    5-沉井基础遇到基础宽度和埋深超出以上范围的应另行研究确定。')

        self.depth_buried_1= float(input('>>>>>请输入基础埋置深度(m)：'))

        print('\n*****关于【基底以下持力层土的天然重度】的说明*****\n'
              '    1-如持力层在水面以下且透水，采用有效重度。')
        self.gamma_b_1 = float(input('>>>>>请输入基底以下持力层土的天然重度(kN/m3)：'))

        print('\n*****关于【基底以上土的加权平均重度】的说明*****\n'
              '    1-如持力层在水面以下且不透水，不论基底以上土的透水性质如何，一律采用饱和重度；\n'
              '    2-如持力层为透水层，应一律采用有效重度。')
        self.gamma_d_1 = float(input('>>>>>请输入基底以上土的加权平均重度(kN/m3)：'))

        print('\n*****关于【宽度修正系数】的说明*****\n'
              '    1-查表2-12。')
        self.para_b_1= float(input('>>>>>请输入宽度修正系数：'))

        print('\n*****关于【深度修正系数】的说明*****\n'
              '    1-查表2-12。')
        self.para_d_1 = float(input('\n>>>>>请输入深度修正系数：'))

        print('{:-^50}'.format('【计算参数】'))
        print('{:\u3000<20}{:<10}{:<10}'.format('变量', '数值', '单位'))
        print('{:\u3000<20}{:<10}{:<10}'.format('未修正的地基承载力特征值', self.fa_1, 'kPa'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基础底面宽度', self.width_1, 'm'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基础埋置深度', self.depth_buried_1, 'm'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基底以下持力层土的天然重度', self.gamma_b_1, 'kN/m3'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基底以上土的加权平均重度', self.gamma_d_1, 'kN/m3'))
        print('{:\u3000<20}{:<10}{:<10}'.format('宽度修正系数', self.para_b_1, '-/-'))
        print('{:\u3000<20}{:<10}{:<10}'.format('深度修正系数', self.para_d_1, '-/-'))
        print('{:-^54}'.format('------------'))

        '宽度修正部分'
        if self.width_1<=2:
            f1=0.0
        elif self.width_1>2 and self.width_1<10:
            f1=self.para_b_1*self.gamma_b_1*(self.width_1-2)
        else:
            f1=self.para_b_1*self.gamma_b_1*(10-2)
        '深度修正部分'
        if self.depth_buried_1<=3:
            f2=0
        else:
            f2=self.para_d_1*self.gamma_d_1*(self.depth_buried_1-3)
        modified_fa=self.fa_1+f1+f2
        print('{:\u3000<20}{:<10}{:<10}'.format('修正后的地基承载力特征值为', modified_fa, 'kPa'))
        print('{:-^50}'.format('【计算结束】'))


    def modified_capacity_building(self):
        print('------------------------------------------------------')
        print('根据《建筑地基规范》规定的地基承载力特征值的修正')
        print('------------------------------------------------------')
        self.fa = float(input('请输入由试验获得的地基承载力特征值（kPa):'))
        self.width = float(input('请输入基础宽度（m）:'))
        self.depth_buried = float(input('请输入基础埋置深度（m）：'))
        self.gamma_b = float(input('请输入基础底面以下土的重度（kN/m3）请注意地下水位以下的土层取有效重度：'))
        self.gamma_d = float(input('请输入基础底面以上土的加权平均重度（kN/m3）请注意地下水位以下的土层取有效重度：'))
        self.para_b = float(input('请输入基础宽度的地基承载力修正系数（见表2-11）：'))
        self.para_d = float(input('请输入基础深度的地基承载力修正系数（见表2-11）：'))
        print('{:-^50}'.format('【计算参数】'))
        print('{:\u3000<20}{:<10}{:<10}'.format('变量', '数值', '单位'))
        print('{:\u3000<20}{:<10}{:<10}'.format('未修正的地基承载力特征值', self.fa, 'kPa'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基础底面宽度', self.width, 'm'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基础埋置深度', self.depth_buried, 'm'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基础底面以下土的重度', self.gamma_b, 'kN/m3'))
        print('{:\u3000<20}{:<10}{:<10}'.format('基础底面以上土的加权平均重度', self.gamma_d, 'kN/m3'))
        print('{:\u3000<20}{:<10}{:<10}'.format('宽度修正系数', self.para_b, '-/-'))
        print('{:\u3000<20}{:<10}{:<10}'.format('深度修正系数', self.para_d, '-/-'))
        print('{:-^54}'.format('------------'))

        '宽度修正部分'
        if self.width<=3:
            f1=0.0
        elif self.width >3 and self.width <6:
            f1=self.para_b * self.gamma_b * (self.width - 3)
        else:
            f1 = self.para_b * self.gamma_b * 3
        '深度修正部分'
        if self.depth_buried <= 0.5:
            f2=0.0
        else:
            f2=self.para_d * self.gamma_d*(self.depth_buried - 0.5)
        modified_fa=self.fa+f1+f2
        print('{:\u3000<20}{:<10}{:<10}'.format('修正后的地基承载力特征值为', modified_fa, 'kPa'))
        print('{:-^50}'.format('【计算结束】'))


if __name__ == '__main__':
    demo =Ground_Bearing_Capacity_Modify()